package net.dgg.rz.common.systemRecord.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 系统操作日志
 */
public class SystemRecord {
    private Long id;
    /**
     * 来源
     * 1、证书 2、生产 3、接口 4、资质 5、文件上传
     */
    private String source;

    /**
     * 业务表名
     */
    private String workTableName;

    /**
     * 业务ID
     */
    private Long workId;

    /**
     * 业务编号
     */
    private String workNo;

    /**
     * 所属事业部ID
     */
    private Long signOrgId;

    /**
     * 所属事业部名字
     */
    private String signOrgName;

    /**
     * 操作人ID
     */
    private Long operaterId;

    /**
     * 操作人名字
     */
    private String operaterName;

    /**
     * 操作人部门ID
     */
    private Long operaterOrgId;

    /**
     * 操作人部门名字
     */
    private String operaterOrgName;

    /**
     * 被操作人ID
     */
    private Long beOperaterId;

    /**
     * 被操作人名字
     */
    private String beOperaterName;

    /**
     * 被操作人部门ID
     */
    private Long beOperaterOrgId;

    /**
     * 被操作人部门名字
     */
    private String beOperaterOrgName;

    /**
     * 操作时间
     */
    private Date operateTime;

    /**
     * 操作类型
     * 1、新增 2、修改 3、下载图片 4、超期 5、分配 6、申请退单 7、备注 8、打电话 9、接收 10、退回 11、废单 12、转单
     * 13、移交 14、生产暂停 15、添加协单 16、取消协单 17、审核通过 18、驳回
     * 19、变更审核人 20、撤回 21、生产完结 22、强制完结 23、结项 24、复制流程
     * 25、更新节点 26.退单恢复办理 27、暂停恢复办理 28、退单审核通过 29、退单审核驳回 30、废单审核通过 31、废单审核驳回 32、删除 33、查看
     * 34、导出、35 、36查看身份证、37查看电话号码、38事业部移交 39导入的记录(从公共生产导入时给的状态) 40 新增渠道 41 更换渠道
     * 42 废单恢复办理、50 删除附件、51 下载附件、52.新增产品、53.更换产品
     */
    private String operateType;

    public final static Map<String,String> operateTypeMap = new HashMap<>();
    static {
        operateTypeMap.put("1","新增");
        operateTypeMap.put("2","修改");
        operateTypeMap.put("3","下载图片");
        operateTypeMap.put("4","超期");
        operateTypeMap.put("5","分配");
        operateTypeMap.put("6","申请退单");
        operateTypeMap.put("7","备注");
        operateTypeMap.put("8","打电话");
        operateTypeMap.put("9","接收");
        operateTypeMap.put("10","退回");
        operateTypeMap.put("11","申请废单");
        operateTypeMap.put("12","转单");
        operateTypeMap.put("13","移交");
        operateTypeMap.put("14","生产暂停");
        operateTypeMap.put("15","添加协单");
        operateTypeMap.put("16","取消协单");
        operateTypeMap.put("17","审核通过");
        operateTypeMap.put("18","驳回");
        operateTypeMap.put("19","变更审核人");
        operateTypeMap.put("20","撤回");
        operateTypeMap.put("21","生产完结");
        operateTypeMap.put("22","强制完结");
        operateTypeMap.put("23","结项");
        operateTypeMap.put("24","复制流程");
        operateTypeMap.put("25","更新节点");
        operateTypeMap.put("26","退单恢复办理");
        operateTypeMap.put("27","暂停恢复办理");
        operateTypeMap.put("28","退单审核通过");
        operateTypeMap.put("29","退单审核驳回");
        operateTypeMap.put("30","废单审核通过");
        operateTypeMap.put("31","废单审核驳回");
        operateTypeMap.put("32","删除");
        operateTypeMap.put("33","查看");
        operateTypeMap.put("34","导出");
        operateTypeMap.put("35","接单");
        operateTypeMap.put("36","查看身份证");
        operateTypeMap.put("37","查看电话号码");
        operateTypeMap.put("38","事业部移交");
        operateTypeMap.put("39","导入的记录");
        operateTypeMap.put("40","新增渠道");
        operateTypeMap.put("41","更换渠道");
        operateTypeMap.put("42","废单恢复办理");
        operateTypeMap.put("50","删除附件");
        operateTypeMap.put("51","删除附件");
        operateTypeMap.put("52","新增产品");
        operateTypeMap.put("53","更换产品");
    }

    /**
     * 备注
     */
    private String remarks;

    /**
     * id
     *
     * @return id id
     */
    public Long getId() {
        return id;
    }

    /**
     * id
     *
     * @param id id
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 来源(区分内部外部)
     *
     * @return source 来源(区分内部外部)
     */
    public String getSource() {
        return source;
    }

    /**
     * 来源(区分内部外部)
     *
     * @param source 来源(区分内部外部)
     */
    public void setSource(String source) {
        this.source = source == null ? null : source.trim();
    }

    /**
     * 业务表名
     *
     * @return work_table_name 业务表名
     */
    public String getWorkTableName() {
        return workTableName;
    }

    /**
     * 业务表名
     *
     * @param workTableName 业务表名
     */
    public void setWorkTableName(String workTableName) {
        this.workTableName = workTableName == null ? null : workTableName.trim();
    }

    /**
     * 业务ID
     *
     * @return work_id 业务ID
     */
    public Long getWorkId() {
        return workId;
    }

    /**
     * 业务ID
     *
     * @param workId 业务ID
     */
    public void setWorkId(Long workId) {
        this.workId = workId;
    }

    /**
     * 业务编号
     *
     * @return work_no 业务编号
     */
    public String getWorkNo() {
        return workNo;
    }

    /**
     * 业务编号
     *
     * @param workNo 业务编号
     */
    public void setWorkNo(String workNo) {
        this.workNo = workNo == null ? null : workNo.trim();
    }

    /**
     * 所属事业部ID
     *
     * @return sign_org_id 所属事业部ID
     */
    public Long getSignOrgId() {
        return signOrgId;
    }

    /**
     * 所属事业部ID
     *
     * @param signOrgId 所属事业部ID
     */
    public void setSignOrgId(Long signOrgId) {
        this.signOrgId = signOrgId;
    }

    /**
     * 所属事业部名字
     *
     * @return sign_org_name 所属事业部名字
     */
    public String getSignOrgName() {
        return signOrgName;
    }

    /**
     * 所属事业部名字
     *
     * @param signOrgName 所属事业部名字
     */
    public void setSignOrgName(String signOrgName) {
        this.signOrgName = signOrgName == null ? null : signOrgName.trim();
    }

    /**
     * 操作人ID
     *
     * @return operater_id 操作人ID
     */
    public Long getOperaterId() {
        return operaterId;
    }

    /**
     * 操作人ID
     *
     * @param operaterId 操作人ID
     */
    public void setOperaterId(Long operaterId) {
        this.operaterId = operaterId;
    }

    /**
     * 操作人名字
     *
     * @return operater_name 操作人名字
     */
    public String getOperaterName() {
        return operaterName;
    }

    /**
     * 操作人名字
     *
     * @param operaterName 操作人名字
     */
    public void setOperaterName(String operaterName) {
        this.operaterName = operaterName == null ? null : operaterName.trim();
    }

    /**
     * 操作人部门ID
     *
     * @return operater_org_id 操作人部门ID
     */
    public Long getOperaterOrgId() {
        return operaterOrgId;
    }

    /**
     * 操作人部门ID
     *
     * @param operaterOrgId 操作人部门ID
     */
    public void setOperaterOrgId(Long operaterOrgId) {
        this.operaterOrgId = operaterOrgId;
    }

    /**
     * 操作人部门名字
     *
     * @return operater_org_name 操作人部门名字
     */
    public String getOperaterOrgName() {
        return operaterOrgName;
    }

    /**
     * 操作人部门名字
     *
     * @param operaterOrgName 操作人部门名字
     */
    public void setOperaterOrgName(String operaterOrgName) {
        this.operaterOrgName = operaterOrgName == null ? null : operaterOrgName.trim();
    }

    /**
     * 被操作人ID
     *
     * @return be_operater_id 被操作人ID
     */
    public Long getBeOperaterId() {
        return beOperaterId;
    }

    /**
     * 被操作人ID
     *
     * @param beOperaterId 被操作人ID
     */
    public void setBeOperaterId(Long beOperaterId) {
        this.beOperaterId = beOperaterId;
    }

    /**
     * 被操作人名字
     *
     * @return be_operater_name 被操作人名字
     */
    public String getBeOperaterName() {
        return beOperaterName;
    }

    /**
     * 被操作人名字
     *
     * @param beOperaterName 被操作人名字
     */
    public void setBeOperaterName(String beOperaterName) {
        this.beOperaterName = beOperaterName == null ? null : beOperaterName.trim();
    }

    /**
     * 被操作人部门ID
     *
     * @return be_operater_org_id 被操作人部门ID
     */
    public Long getBeOperaterOrgId() {
        return beOperaterOrgId;
    }

    /**
     * 被操作人部门ID
     *
     * @param beOperaterOrgId 被操作人部门ID
     */
    public void setBeOperaterOrgId(Long beOperaterOrgId) {
        this.beOperaterOrgId = beOperaterOrgId;
    }

    /**
     * 被操作人部门名字
     *
     * @return be_operater_org_name 被操作人部门名字
     */
    public String getBeOperaterOrgName() {
        return beOperaterOrgName;
    }

    /**
     * 被操作人部门名字
     *
     * @param beOperaterOrgName 被操作人部门名字
     */
    public void setBeOperaterOrgName(String beOperaterOrgName) {
        this.beOperaterOrgName = beOperaterOrgName == null ? null : beOperaterOrgName.trim();
    }

    /**
     * 操作时间
     *
     * @return operate_time 操作时间
     */
    public Date getOperateTime() {
        return operateTime;
    }
    public String getOperateTimeStr() {
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sf.format(operateTime);
    }

    /**
     * 操作时间
     *
     * @param operateTime 操作时间
     */
    public void setOperateTime(Date operateTime) {
        this.operateTime = operateTime;
    }

    /**
     * 操作类型
     *
     * @return operate_type 操作类型
     */
    public String getOperateType() {
        return operateType;
    }

    /**
     * 操作类型
     *
     * @param operateType 操作类型
     */
    public void setOperateType(String operateType) {
        this.operateType = operateType == null ? null : operateType.trim();
    }

    /**
     * 备注
     *
     * @return remarks 备注
     */
    public String getRemarks() {
        return remarks;
    }

    /**
     * 备注
     *
     * @param remarks 备注
     */
    public void setRemarks(String remarks) {
        this.remarks = remarks == null ? null : remarks.trim();
    }
}